#ifndef ARVORE_H
#define ARVORE_H

#define MAX_MEM 50
#define NIL -1

typedef enum { 
   f_AlocaNo, f_LiberaNo,
   f_InsereValor, f_RemoveValor, f_ConsultaValor,
   f_DuplicaArvore
} Funcoes;

typedef enum {false, true} bool;

typedef int apNo;

typedef struct {
  int val;
  apNo esq;
  apNo dir;
} No;

typedef struct No2 {
   int val;
   struct No2 *esq, *dir;
} No2;

void InicializaMemoria();

apNo AlocaNo();

void LiberaNo();

void ImprimeArvore(apNo arv);

void ImprimeListaLivres();

bool InsereValor(apNo* arv, int val);

apNo RemoveValor(apNo* arv, int val);

apNo ConsultaValor(apNo arv, int val);

No2* DuplicaArvore(apNo arv);

void LiberaArvoreTrad(No2* arv);

void ImprimeArvoreTrad(No2* arv);

#endif
